home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 173 / Issue 173 - Jul 2002 - DPCS0702.iso / editorial / Python / html-2.2.exe / ref / grammar.txt < prev    next >
Encoding:
Text File  |  2001-12-20  |  9.4 KB  |  437 lines

  1.  
  2. identifier ::= 
  3.              (letter|"_") (letter | digit | "_")*
  4.   
  5. letter ::= 
  6.              lowercase | uppercase
  7.   
  8. lowercase ::= 
  9.              "a"..."z"
  10.   
  11. uppercase ::= 
  12.              "A"..."Z"
  13.   
  14. digit ::= 
  15.              "0"..."9"
  16.  
  17. stringliteral ::= 
  18.              [stringprefix](shortstring | longstring)
  19.   
  20. stringprefix ::= 
  21.              "r" | "u" | "ur" | "R" | "U" | "UR" | "Ur" | "uR"
  22.   
  23. shortstring ::= 
  24.              "'" shortstringitem* "'"
  25.               | '"' shortstringitem* '"'
  26.   
  27. longstring ::= 
  28.              "'''" longstringitem* "'''"
  29.               | '"""' longstringitem* '"""'
  30.   
  31. shortstringitem ::= 
  32.              shortstringchar | escapeseq
  33.   
  34. longstringitem ::= 
  35.              longstringchar | escapeseq
  36.   
  37. shortstringchar ::= 
  38.              <any ASCII character except "\" or newline or the quote>
  39.   
  40. longstringchar ::= 
  41.              <any ASCII character except "\">
  42.   
  43. escapeseq ::= 
  44.              "\" <any ASCII character>
  45.  
  46. longinteger ::= 
  47.              integer ("l" | "L")
  48.   
  49. integer ::= 
  50.              decimalinteger | octinteger | hexinteger
  51.   
  52. decimalinteger ::= 
  53.              nonzerodigit digit* | "0"
  54.   
  55. octinteger ::= 
  56.              "0" octdigit+
  57.   
  58. hexinteger ::= 
  59.              "0" ("x" | "X") hexdigit+
  60.   
  61. nonzerodigit ::= 
  62.              "1"..."9"
  63.   
  64. octdigit ::= 
  65.              "0"..."7"
  66.   
  67. hexdigit ::= 
  68.              digit | "a"..."f" | "A"..."F"
  69.  
  70. floatnumber ::= 
  71.              pointfloat | exponentfloat
  72.   
  73. pointfloat ::= 
  74.              [intpart] fraction | intpart "."
  75.   
  76. exponentfloat ::= 
  77.              (intpart | pointfloat)
  78.               exponent
  79.   
  80. intpart ::= 
  81.              digit+
  82.   
  83. fraction ::= 
  84.              "." digit+
  85.   
  86. exponent ::= 
  87.              ("e" | "E") ["+" | "-"] digit+
  88.  
  89. imagnumber ::= (floatnumber | intpart) ("j" | "J")
  90.  
  91. atom ::= 
  92.              identifier | literal | enclosure
  93.   
  94. enclosure ::= 
  95.              parenth_form | list_display
  96.               | dict_display | string_conversion
  97.  
  98. literal ::= 
  99.              stringliteral | integer
  100.               | longinteger | floatnumber
  101.               | imagnumber
  102.  
  103. parenth_form ::= 
  104.              "(" [expression_list] ")"
  105.  
  106. list_display ::= 
  107.              "[" [listmaker] "]"
  108.   
  109. listmaker ::= 
  110.              expression ( list_for
  111.               | ( "," expression)* [","] )
  112.   
  113. list_iter ::= 
  114.              list_for | list_if
  115.   
  116. list_for ::= 
  117.              "for" expression_list "in" testlist
  118.               [list_iter]
  119.   
  120. list_if ::= 
  121.              "if" test [list_iter]
  122.  
  123. dict_display ::= 
  124.              "" [key_datum_list] ""
  125.   
  126. key_datum_list ::= 
  127.              key_datum ("," key_datum)* [","]
  128.   
  129. key_datum ::= 
  130.              expression ":" expression
  131.  
  132. string_conversion ::= 
  133.              "`" expression_list "`"
  134.  
  135. primary ::= 
  136.              atom | attributeref
  137.               | subscription | slicing | call
  138.  
  139. attributeref ::= 
  140.              primary "." identifier
  141.  
  142. subscription ::= 
  143.              primary "[" expression_list "]"
  144.  
  145. slicing ::= 
  146.              simple_slicing | extended_slicing
  147.   
  148. simple_slicing ::= 
  149.              primary "[" short_slice "]"
  150.   
  151. extended_slicing ::= 
  152.              primary "[" slice_list "]" 
  153.   
  154. slice_list ::= 
  155.              slice_item ("," slice_item)* [","]
  156.   
  157. slice_item ::= 
  158.              expression | proper_slice | ellipsis
  159.   
  160. proper_slice ::= 
  161.              short_slice | long_slice
  162.   
  163. short_slice ::= 
  164.              [lower_bound] ":" [upper_bound]
  165.   
  166. long_slice ::= 
  167.              short_slice ":" [stride]
  168.   
  169. lower_bound ::= 
  170.              expression
  171.   
  172. upper_bound ::= 
  173.              expression
  174.   
  175. stride ::= 
  176.              expression
  177.   
  178. ellipsis ::= 
  179.              "..."
  180.  
  181. call ::= 
  182.              primary "(" [argument_list [","]] ")"
  183.   
  184. argument_list ::= 
  185.              positional_arguments ["," keyword_arguments 
  186.          ["," "*" expression ["," "**" expression]]]
  187.               | keyword_arguments ["," "*" expression 
  188.         ["," "**" expression]]
  189.           | "*" expression ["," "**" expression]
  190.           | "**" expression
  191.          
  192.   
  193. positional_arguments ::= 
  194.              expression ("," expression)*
  195.   
  196. keyword_arguments ::= 
  197.              keyword_item ("," keyword_item)*
  198.   
  199. keyword_item ::= 
  200.              identifier "=" expression
  201.  
  202. power ::= 
  203.              primary ["**" u_expr]
  204.  
  205. u_expr ::= 
  206.              power | "-" u_expr
  207.               | "+" u_expr | "~" u_expr
  208.  
  209. m_expr ::= 
  210.              u_expr | m_expr "*" u_expr
  211.               | m_expr "/" u_expr
  212.               | m_expr "\%" u_expr
  213.   
  214. a_expr ::= 
  215.              m_expr | aexpr "+" m_expr
  216.               aexpr "-" m_expr
  217.  
  218. shift_expr ::= 
  219.              a_expr
  220.               | shift_expr ( "<<" | ">>" ) a_expr
  221.  
  222. and_expr ::= 
  223.              shift_expr | and_expr "\;SPMamp;" shift_expr
  224.   
  225. xor_expr ::= 
  226.              and_expr | xor_expr "\textasciicircum" and_expr
  227.   
  228. or_expr ::= 
  229.              xor_expr | or_expr "|" xor_expr
  230.  
  231. comparison ::= 
  232.              or_expr ( comp_operator or_expr )*
  233.   
  234. comp_operator ::= 
  235.              "<" | ">" | "==" | ">=" | "<=" | "<>" | "!="
  236.               | "is" ["not"] | ["not"] "in"
  237.  
  238. expression ::= 
  239.              or_test | lambda_form
  240.   
  241. or_test ::= 
  242.              and_test | or_test "or" and_test
  243.   
  244. and_test ::= 
  245.              not_test | and_test "and" not_test
  246.   
  247. not_test ::= 
  248.              comparison | "not" not_test
  249.   
  250. lambda_form ::= 
  251.              "lambda" [parameter_list]: expression
  252.  
  253. expression_list ::= 
  254.              expression ( "," expression )* [","]
  255.  
  256. simple_stmt ::= 
  257.              expression_stmt
  258.               | assert_stmt
  259.               | assignment_stmt
  260.               | augmented_assignment_stmt
  261.               | pass_stmt
  262.               | del_stmt
  263.               | print_stmt
  264.               | return_stmt
  265.               | yield_stmt
  266.               | raise_stmt
  267.               | break_stmt
  268.               | continue_stmt
  269.               | import_stmt
  270.               | global_stmt
  271.               | exec_stmt
  272.  
  273. expression_stmt ::= 
  274.              expression_list
  275.  
  276. assert_statement ::= 
  277.              "assert" expression ["," expression]
  278.  
  279. assignment_stmt ::= 
  280.              (target_list "=")+ expression_list
  281.   
  282. target_list ::= 
  283.              target ("," target)* [","]
  284.   
  285. target ::= 
  286.              identifier
  287.               | "(" target_list ")"
  288.               | "[" target_list "]"
  289.               | attributeref
  290.               | subscription
  291.               | slicing
  292.  
  293. augmented_assignment_stmt ::= 
  294.              target augop expression_list
  295.   
  296. augop ::= 
  297.              "+=" | "-=" | "*=" | "/=" | "\%=" | "**="
  298.               | ">>=" | "<<=" | "\&=" | "\textasciicircum=" | "|="
  299.   
  300. target ::= 
  301.              identifier
  302.               | "(" target_list ")"
  303.               | "[" target_list "]"
  304.               | attributeref
  305.               | subscription
  306.               | slicing
  307.  
  308. pass_stmt ::= 
  309.              "pass"
  310.  
  311. del_stmt ::= 
  312.              "del" target_list
  313.  
  314. print_stmt ::= 
  315.              "print" ( \optionalexpression ("," expression)* \optional","
  316.                       | ">\code>" expression
  317.                         \optional("," expression)+ \optional",")
  318.  
  319. return_stmt ::= 
  320.              "return" [expression_list]
  321.  
  322. yield_stmt ::= 
  323.              "yield" expression_list
  324.  
  325. raise_stmt ::= 
  326.              "raise" [expression ["," expression
  327.               ["," expression]]]
  328.  
  329. break_stmt ::= 
  330.              "break"
  331.  
  332. continue_stmt ::= 
  333.              "continue"
  334.  
  335. import_stmt ::= 
  336.              "import" module ["as" name]
  337.                 ( "," module ["as" name] )*
  338.               | "from" module "import" identifier
  339.                 ["as" name]
  340.                 ( "," identifier ["as" name] )*
  341.               | "from" module "import" "*"
  342.   
  343. module ::= 
  344.              (identifier ".")* identifier
  345.  
  346. global_stmt ::= 
  347.              "global" identifier ("," identifier)*
  348.  
  349. exec_stmt ::= 
  350.              "exec" expression
  351.               ["in" expression ["," expression]]
  352.  
  353. compound_stmt ::= 
  354.              if_stmt | while_stmt | for_stmt
  355.               | try_stmt | funcdef | classdef
  356.   
  357. suite ::= 
  358.              stmt_list NEWLINE
  359.               | NEWLINE INDENT statement+ DEDENT
  360.   
  361. statement ::= 
  362.              stmt_list NEWLINE | compound_stmt
  363.   
  364. stmt_list ::= 
  365.              simple_stmt (";" simple_stmt)* [";"]
  366.  
  367. if_stmt ::= 
  368.              "if" expression ":" suite
  369.               ( "elif" expression ":" suite )*
  370.               ["else" ":" suite]
  371.  
  372. while_stmt ::= 
  373.              "while" expression ":" suite
  374.                ["else" ":" suite]
  375.  
  376. for_stmt ::= 
  377.              "for" target_list "in" expression_list
  378.               ":" suite
  379.               ["else" ":" suite]
  380.  
  381. try_stmt ::= 
  382.              try_exc_stmt | try_fin_stmt
  383.   
  384. try_exc_stmt ::= 
  385.              "try" ":" suite
  386.               ("except" [expression ["," target]] ":"
  387.               suite)+
  388.               ["else" ":" suite]
  389.   
  390. try_fin_stmt ::= 
  391.              "try" ":" suite
  392.               "finally" ":" suite
  393.  
  394. funcdef ::= 
  395.              "def" funcname "(" [parameter_list] ")"
  396.               ":" suite
  397.   
  398. parameter_list ::= 
  399.              (defparameter ",")*
  400.               ("*" identifier [, "**" identifier]
  401.                | "**" identifier
  402.                | defparameter [","])
  403.   
  404. defparameter ::= 
  405.              parameter ["=" expression]
  406.   
  407. sublist ::= 
  408.              parameter ("," parameter)* [","]
  409.   
  410. parameter ::= 
  411.              identifier | "(" sublist ")"
  412.   
  413. funcname ::= 
  414.              identifier
  415.  
  416. classdef ::= 
  417.              "class" classname [inheritance] ":"
  418.               suite
  419.   
  420. inheritance ::= 
  421.              "(" [expression_list] ")"
  422.   
  423. classname ::= 
  424.              identifier
  425.  
  426. file_input ::= 
  427.              (NEWLINE | statement)*
  428.  
  429. interactive_input ::= 
  430.              [stmt_list] NEWLINE | compound_stmt NEWLINE
  431.  
  432. eval_input ::= 
  433.              expression_list NEWLINE*
  434.  
  435. input_input ::= 
  436.              expression_list NEWLINE
  437.